﻿module CodeCamp01.Volunteers
{
  import CodeCamp01.BasicTypes;
  import CodeCamp01.Events;
  
  type Task
  {
    Id : Integer32 => AutoNumber();
    EventId : Event where value in Events ;
    Name : Text128;
    Notes : Text1024?;
    Timeslots : { TaskTimeslots* };
  }
  
  type TaskTimeslot
  {
    Id : Integer32 => AutoNumber();
    Date : Date;
    StartTime : Time;
    EndTime : Time;
    VolunteersNeeded : Integer32;
  }
  
  Tasks : { Task* } where 
    identity Id, 
    unique( EventId, Name );
  
  TaskTimeslots : { TaskTimeslot* } where
    identity Id;

  Tasks
  {
    {
      EventId => Events.PCC2010,
      Name => "Friday evening Speakers and Volunteers Reception set up",
      Notes => "Non-food set up",
      Timeslots =>
      { 
        { Date => 2010-05-21, StartTime => 17:30:00, EndTime => 19:30:00, VolunteersNeeded => 3 }
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Load in",
      Notes => "Help unload materials, haul from parking lot",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:00:00, EndTime => 08:00:00, VolunteersNeeded => 4 }
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Sign set up",
      Notes => "Includes signs for rooms, entrances to buildings, directions from parking areas, etc. Must start promptly at 7:00 AM.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:00:00, EndTime => 08:00:00, VolunteersNeeded => 4 }
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Bulletin board set up",
      Notes => "Bulletin boards used for notices.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:00:00, EndTime => 08:00:00, VolunteersNeeded => 1 }
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Sponsor tables and chairs set up",
      Notes => "",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:00:00, EndTime => 08:00:00, VolunteersNeeded => 2 }
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Registration and Camp Central Information",
      Notes => "Check-in attendees, hand out materials, provide directions",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 09:00:00, VolunteersNeeded => 10 },
        { Date => 2010-05-22, StartTime => 09:00:00, EndTime => 10:45:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 10:45:00, EndTime => 12:45:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 12:45:00, EndTime => 15:15:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 15:15:00, EndTime => 16:45:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 16:45:00, EndTime => 18:30:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 18:30:00, EndTime => 20:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Welcome Team",
      Notes => "Greet attendees and presenters, direct to registration and other facilities",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 09:00:00, VolunteersNeeded => 4 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Kiosk computer wrangler",
      Notes => "Manage sponsor slides (PowerPoint) on two kiosk computer systems at registration, morning break, lunch, afternoon break, evening reception",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 19:30:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Photography",
      Notes => "Capture the essence of Portland Code Camp in pictures. Cover sessions, registration, lunch, breaks, evening reception, volunteers helping out, attendees interacting, learning, and having fun. A small team will allow you to split up the activities. You provide your own digital camera.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 22:00:00, VolunteersNeeded => 3 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Gophers and runners",
      Notes => "Gopher == go fer, as in 'Go fer a backup projector.' Available to run between rooms to fetch people or stuff. Please bring a cell phone.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 09:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 08:45:00, EndTime => 10:15:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 10:15:00, EndTime => 12:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 13:15:00, EndTime => 14:45:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 14:45:00, EndTime => 16:30:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 16:30:00, EndTime => 18:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 19:15:00, EndTime => 22:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Speakers Lounge Host",
      Notes => "Keep the speakers lounge running smoothly, keep an eye on give-aways and personal items.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 07:30:00, EndTime => 09:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 08:45:00, EndTime => 10:15:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 10:15:00, EndTime => 12:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 13:15:00, EndTime => 14:45:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 14:45:00, EndTime => 16:30:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 16:30:00, EndTime => 18:00:00, VolunteersNeeded => 2 },
        { Date => 2010-05-22, StartTime => 19:15:00, EndTime => 22:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Code Camp Central clean up",
      Notes => "Tear down registation, sponsors tables and chairs, etc.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 19:30:00, EndTime => 22:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Speakers Lounge clean up",
      Notes => "Tear down registation, sponsors tables and chairs, etc.",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 19:30:00, EndTime => 22:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Sign clean up",
      Notes => "Take down event signs, prepare for storage",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 21:00:00, EndTime => 22:00:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Final room check",
      Notes => "Check that all rooms are clean, retrieve items that were left behind",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 21:30:00, EndTime => 22:30:00, VolunteersNeeded => 2 },
      }
    },
    {
      EventId => Events.PCC2010,
      Name => "Load out",
      Notes => "Help load materials, haul to parking lot",
      Timeslots =>
      { 
        { Date => 2010-05-22, StartTime => 21:30:00, EndTime => 22:30:00, VolunteersNeeded => 2 },
      }
    },
  }
}
